package model

import (
	"go-zero-admin/pkg/model"
	"time"
)

type TaskSchedule struct {
	model.MODEL_BASE
	TaskName        string     `gorm:"type:varchar(255);not null;comment:'任务名称，对应任务类型如 jobtype.TestDemoJob 等'"`
	TaskStatus      string     `gorm:"type:varchar(50);not null;default:'pending';comment:'任务状态，如 pending（未执行）、running（执行中）、success（已成功）、failed（已失败）等'"`
	LastExecuteTime *time.Time `gorm:"type:datetime;comment:'上次执行时间，记录任务最近一次执行的时间点'"`
	TaskType        string     `gorm:"type:varchar(255);not null;default:'0';comment:'任务类型，0定时循环，1一次性任务，2一次性任务延迟执行，3一次性任务指定时间运行'"`
	TimeSchedule    string     `gorm:"type:text;comment:'根据任务类型的时间参数，*/1 * * * *,-1,3*time.second,timestamp'"`
	UniqueID        string     `gorm:"type:varchar(255);not null;comment:'任务唯一标识，用于去重等判断'"`
	ExecCmd         string     `gorm:"type:varchar(255);comment:'执行命令'"`
	RetryCount      uint       `gorm:"type:uint;not null;default:0;comment:'任务已重试次数'"`
	MaxRetry        uint       `gorm:"type:uint;default:3;comment:'任务最大允许重试次数'"`
	IsOk            bool       `gorm:"type:tinyint(1);not null;default:0;comment:'是否已完成，0 表示未完成，1 表示已完成'"`
}
